package cn.growthgate.fgo.util;

import java.io.Serializable;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

import com.baomidou.mybatisplus.enums.IEnum;

/**
 * 枚举工具类
 * 
 * @author GrowthGate
 * @since 2019年5月7日
 *
 */
public class EnumUtils {
	
	public static <E extends IEnum> List<E> getList(Class<E> enumClass) {
		return Arrays.asList(enumClass.getEnumConstants());
	}

	public static <E extends IEnum> List<Serializable> toValueList(List<E> list) {
		return list == null ? null : list.stream().map(e -> e.getValue()).collect(Collectors.toList());
	}
	
	public static <E extends IEnum> E getByValue(Class<E> enumClass, Serializable value) {
		return getList(enumClass).stream().filter(e -> e.getValue().equals(value)).findFirst().orElse(null);
	}

}
